﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QuizzAdminData;

namespace QuizzAdmin
{
    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    /// <author>Kenny Vaneetvelde</author>
    public partial class SpelersForm : Form
    {
        private bool _gebruikFilter = false;
        private int _filterType;
        private string _filterText;

        public SpelersForm()
        {
            InitializeComponent();
        }

        private void SpelersForm_Load(object sender, EventArgs e)
        {
            LaadSpelers();
        }

        public void LaadSpelers()
        {
            List<Speler> spelers;

            try
            {
                lvSpelers.Items.Clear();

                spelers = SpelersDB.GetSpelers();

                if (spelers.Count > 0)
                {
                    int index = 0;
                    foreach (Speler s in spelers)
                    {
                        if (_gebruikFilter)
                        {
                            if (_filterType == 0 && s.Voornaam.ToLower().Contains(_filterText.ToLower()))
                            {
                                lvSpelers.Items.Add(s.Id.ToString());
                                lvSpelers.Items[index].SubItems.Add(s.Voornaam);
                                lvSpelers.Items[index].SubItems.Add(s.Familienaam);
                                index++;
                            }
                            else if (_filterType == 1 && s.Familienaam.ToLower().Contains(_filterText.ToLower()))
                            {
                                lvSpelers.Items.Add(s.Id.ToString());
                                lvSpelers.Items[index].SubItems.Add(s.Voornaam);
                                lvSpelers.Items[index].SubItems.Add(s.Familienaam);
                                index++;
                            }
                        }
                        else
                        {
                            lvSpelers.Items.Add(s.Id.ToString());
                            lvSpelers.Items[index].SubItems.Add(s.Voornaam);
                            lvSpelers.Items[index].SubItems.Add(s.Familienaam);
                            index++;
                        }
                    }
                    if (index > 0)
                        lvSpelers.Items[0].Selected = true;
                    else
                        btnBewerken.Enabled = false;
                }
                else
                {
                    btnBewerken.Enabled = false;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void lvSpelers_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            Point p = e.Location;

            ListViewHitTestInfo inf = lvSpelers.HitTest(p);

            int id = Convert.ToInt32(inf.Item.SubItems[0].Text);

            SpelersBewerkForm frm = new SpelersBewerkForm(id);

            frm.Show();
        }

        private void btnFilter_Click(object sender, EventArgs e)
        {
            SpelersFilterForm frm = new SpelersFilterForm();

            frm.FilterText = _filterText;
            frm.FilterType = _filterType;

            DialogResult res = frm.ShowDialog();

            if (res == DialogResult.Yes)
            {
                _gebruikFilter = true;
                _filterType = frm.FilterType;
                _filterText = frm.FilterText;
            }
            else if (res == DialogResult.No)
            {
                _gebruikFilter = false;
                _filterType = 0;
                _filterText = "";
            }

            LaadSpelers();
            lvSpelers.Focus();
        }

        private void btnBewerken_Click(object sender, EventArgs e)
        {
            if (lvSpelers.SelectedItems.Count == 0)
                lvSpelers.Items[0].Selected = true;

            int id = Convert.ToInt32(lvSpelers.SelectedItems[0].SubItems[0].Text);

            SpelersBewerkForm frm = new SpelersBewerkForm(id);

            frm.ShowDialog(this);

            LaadSpelers();
            lvSpelers.Focus();
        }

        private void btnNieuw_Click(object sender, EventArgs e)
        {
            SpelersBewerkForm frm = new SpelersBewerkForm();

            frm.ShowDialog(this);

            LaadSpelers();
            lvSpelers.Focus();
        }

        private void btnVerwijderen_Click(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(lvSpelers.SelectedItems[0].SubItems[0].Text);

            if (MessageBox.Show("Ben je zeker dat je de speler met ID " + id.ToString() + " wilt verwijderen?",
                "verwijderen",
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Question) == DialogResult.Yes)
            {
                SpelersDB.DeleteSpeler(id);
                LaadSpelers();
            }
        }
    }
}
